//package com.life.notes.config.aspect;
//
//import cn.hutool.core.bean.BeanUtil;
//import com.life.notes.common.input.BasePageQuery;
//import lombok.extern.slf4j.Slf4j;
//import org.aspectj.lang.ProceedingJoinPoint;
//import org.aspectj.lang.Signature;
//import org.aspectj.lang.annotation.Around;
//import org.aspectj.lang.annotation.Aspect;
//import org.aspectj.lang.annotation.Pointcut;
//import org.aspectj.lang.reflect.MethodSignature;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import java.lang.reflect.Method;
//import java.util.Map;
//
//
///**
// * Aop处理-Controller层查询参数数据权限校验
// *
// * @author minghao
// * @date 2020年3月3日11:29:15
// */
//@Slf4j
//@Aspect
//@Component
//public class UserDataRoleAspect {
//
//    @Autowired
//    private UserRoleService userRoleService;
//
//    //controller切点
//    @Pointcut("@annotation(com.haier.hwork.report.config.annotation.UserDataRole)")
//    public void controllerAspect() {
//
//    }
//
//    /**
//     * 如果参数值为空则用其数据权限填充，否则检查参数的权限有效性
//     *
//     * @param joinPoint
//     * @return
//     * @throws Throwable
//     */
//    @Around("controllerAspect()")
//    public Object doBefore(ProceedingJoinPoint joinPoint) throws Throwable {
//        String name = joinPoint.getTarget().getClass().getName();
//        Signature signature = joinPoint.getSignature();
//        MethodSignature methodSignature = (MethodSignature) signature;
//        Method method = methodSignature.getMethod();
//        Object[] args = joinPoint.getArgs();
//        //检查用户数据权限
//        for (int i = 0; i < args.length; i++) {
//            Object o = args[i];
//            if (o instanceof BasePageQuery) {
//                //对比数据权限和参数
//                Map queryParam = BeanUtil.beanToMap(o);
//
//                o = BeanUtil.mapToBean(queryParam, o.getClass(), true);
//                args[i] = o;
//            }
//        }
//        return joinPoint.proceed(args);
//
//
//    }
//
//}
